<!doctype html>
<html>
<body>
<canvas style="position:absolute; top:40px; left:40px" width="200" height="200"></canvas>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
var test = async_test("Test to copy image");
requestAnimationFrame(test.step_func(() => {
  const canvas = document.querySelector('canvas');
  const context = canvas.getContext('2d');
  context.fillStyle = 'red';
  context.fillRect(0, 0, 200, 200);
  requestAnimationFrame(test.step_func(() => {
    testRunner.copyImageThen(50, 50, test.step_func_done((width, height, snapshot) => {
      try {
        assert_equals(width, 200, "The copied image must be 200x200");
        assert_equals(height, 200, "The copied image must be 200x200");
        const topleft = new Uint8Array(snapshot).subarray(0, 4);
        assert_equals(topleft[0], 255, "The copied image's top left must be red. " + JSON.stringify(topleft));
        assert_equals(topleft[1], 0, "The copied image's top left must be red. " + JSON.stringify(topleft));
        assert_equals(topleft[2], 0, "The copied image's top left must be red. " + JSON.stringify(topleft));
        assert_equals(topleft[3], 255, "The copied image's top left must be red. " + JSON.stringify(topleft));
      } catch (e) {
        assert_unreached('' + e);
      }
    }));
  }));
}));
</script>
</body>
</html>
